
#include <stdio.h>

#include <sys/stat.h>
#include <sys/msg.h>

#include "ipc_msg.h"

#define MSG_PERM S_IRUSR | S_IWUSR | IPC_CREAT

int open_msg_queue(int msg_key)
{
    return msgget((key_t)msg_key, MSG_PERM);
}

int send_msg_to_queue(int msgid, long msg_type, void *msg)
{

    return msgsnd(msgid, msg, ((msgbuf_t *)msg)->len + sizeof(((msgbuf_t *)msg)->len), 0);
}

int recv_msg_from_queue(int msgid, long msg_type, void *msg)
{

    return msgrcv(msgid, msg, ((msgbuf_t *)msg)->len + sizeof(((msgbuf_t *)msg)->len), msg_type,0);
}

void close_msg_queue(int msgid)
{
    msgctl(msgid, IPC_RMID, NULL);
}